package cn.xiaolang.function.string;

import org.apache.commons.lang3.StringUtils;
import org.junit.Test;

public class StringTest {

    public static void main(String[] args) {
       
    }
    /**
     * 字符串的正则分割
     */
    @Test
    public void splitStringTest(){
        String str = "123/456<>789!w33yttrftyr";
        String[] strings = str.split("\\D+");
        for (String string : strings) {
            System.out.println("正则分割的字符串："+string);
        }
    }
    /**
     * StringUtils拼接成字符串
     */
    @Test
    public void MergeByCharTest(){
        String[] strs = {"J_001","J_002","J_003","J_004","J_005","J_006"};
        String joinStr = StringUtils.join(strs, ",");
        System.out.println("StringUtils拼接组合的字符串："+joinStr);
        /**
         * 基本数据类型跟包装数据类型的区别：
         * 一个是对象，一个是变量；
         * 一个放在栈中（先入后出结构，一级缓存，用完就结束），一个放在堆中（二级缓存，gc管理回收资源）
         */
        Integer i = 132;
        double j = 1234.8;
        String stri = i+"";
        String strj = String.valueOf(j);
        Integer newi = Integer.valueOf(stri);
        double newj = Double.valueOf(strj);
        
        System.out.println("基本数据类型转换为字符串：\n"+stri);
        System.out.println(strj);
        System.out.println("字符串转换为包装数据类型：\n"+newi);
        System.out.println(newj);
    }
    /**
     * StringUtils截取字符串
     */
    @Test
    public void subStringTest(){
        String str = "J_0_01,J_002,J_003,J_004,J_005,J_006";
        String[] strings = str.split("\\D+");
        for (String string : strings) {
            System.out.println("正则分割的字符串："+string);
        }
        
        String[] strs = str.split(",");
        for (String newStr : strs){
            System.out.println("根据某字符第一次出现时，截取保留后面的"+StringUtils.substringAfter(newStr, "_"));
            System.out.println("根据某字符第一次出现时，截取保留前面的"+StringUtils.substringBefore(newStr, "_"));
        }
    }
    
    /**
     * 按正则/字符串去分割
     */
    @Test
    public void splitByMatchAndString() {
        String str = "12/9<>";
        String str1 =  "你好D，我是大D怎么没有偶看见你D啊";
        //使用字符串分割，是按照该字符分割，该字符祛除
        String[] split2 = str1.split("D");
        //使用正则分割字符串，是符合正则的被分割出来，这里是数字被分割出来
        String[] split = str.split("\\D+");
        System.out.println(split);
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }
        for (int i = 0; i < split2.length; i++) {
            System.out.println(split2[i]);
        }
    }
    /**
     * url的重写，字符串的替代
     */
    @Test
    public void replaceString(){
        String url = "http://www.mytaotao.com/page ?page = {page}";
   //     String newUrl2 = url.replace("{page}", "4");
        //使用正则匹配代替，解决：使用commons的StringUtils解决
        String newUrl = url.replaceAll("{page}", "5");
     //   System.out.println(newUrl2);
        System.out.println(newUrl);
        
    }
    
    /**
     * 利用StringBuffer反转一个字符串的方法
     */
    @Test
    public void reverseString(){
        String str = "abcdefg";
        //字符串转换为字符串数组
        String[] str2 = str.split("");
        for (int i = 0; i < str2.length; i++) {
           System.out.println(str2[i]);
        }
        
        String str3 = new StringBuffer(str).reverse().toString();
        System.out.println(str3);
    }
    
    /**
     * 格式化字符串
     * @author fuhw
     * @date 2016年4月7日 上午9:32:09
     */
    @Test
    public void formatString(){
		  System.out.println(String.format("%6s", "235").replace(" ", "0"));
		  System.out.println(String.format("%06d",123));
		  
		/**
		 * 分割截取字符串 
		 */
		String  string = "xiaolang.mp4";
		
		System.out.println("判断字符串是否包含：\".\":"+string.contains("."));
		System.out.println(string.split(".mp4")[0]);
		System.out.println(string.split(".mp4")[0].contains("."));

		System.out.println(string.split("\\.")[0]);
		System.out.println(string.split("[.]")[0]);
		System.out.println(string.substring(0, string.length()-4));
    }
    
    
}
